package cc.zy.base.hr.mapper;

import cc.zy.base.hr.entity.HrDept;
import cc.zy.base.system.entity.Dept;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 部门
 * Mapper
 *
 * @author Jiangjinlin
 * @date 2021-01-18 10:51:13
 */
@Repository
public interface HrDeptMapper extends BaseMapper<HrDept> {

    /**
     * 查找部门详细信息
     *
     * @param page    分页对象
     * @param hrDept 部门对象，用于传递查询条件
     * @return Ipage
     */
    <T> IPage<HrDept> findDeptDetailPage(Page<T> page, @Param("hrDept") HrDept hrDept);

    /**
     *
     * @param hrDept
     * @return
     */
    long countDeptDetail(@Param("hrDept") HrDept hrDept);

    /**
     * 通过ID查找部门
     *
     * @return 部门
     */
    HrDept findById(Integer deptId);

    /**
     * 增加
     */
    void savedept(HrDept hrdept);

    /**
     * 判断是否存在
     *
     * @return HrDept
     */
    HrDept hrDeptExist(@Param("hrDept") HrDept hrdept);

    /**
     * 根据部门名称查ID
     * @param deptName
     * @return id
     */
    Integer findId(@Param("deptName") String deptName);

    /**
     * 修改部门信息
     * @param hrDept
     */
    void updateHrDeptById(@Param("hrDept")HrDept hrDept);

    /**
     * 根据微信用户ID查找姓名
     * @param userId
     * @return
     */
    String getNameByWxUserId(@Param("userId") String userId);

    /**
     * 获得常量对应字典中的id
     * @param constant
     * @return
     */
    Integer getConstantId(@Param("constant") String constant);

    /**
     * 删除部门
     * @param hrDept
     */
    void deleteByName(@Param("deptName") String hrDept);

    List<HrDept> getAllHrDept();

    /**
     * 获取员工最近同步时间
     * @return
     */
    Date getHrDeptUpdateDate();

    /**
     * @param deptName       部门名称
     * @return
     */
    List<HrDept> isRepetitive(@Param("deptName") String deptName);


    Integer selectDeptId(@Param("deptName") String deptName);

    /**
     * 下拉框获取值
     * @return
     */
    List<HrDept> findAll();

    /**
     * 新增时查询该组织的父组织
     * @param deptId
     * @return
     */
    List<Dept> findAllParent(@Param("hrDeptId") int hrDeptId);


    /**
     * 根据计划草稿中的部门名称组合 查所有的名称
     *
     * @author zhangyiaho
     */
    List<HrDept> findDeptsByNames(@Param("deptNames") String[] deptNames);


    /**
     * 下拉框 获取全部HrDept
     * @return
     */
    List<HrDept> findHrDeptAll();




}